การตั้งค่าสำหรับจำกัดการเข้าถึง SSH ใน Elastic Beanstalk
POP จากบริษัท Classmethod (Thailand) ครับ
ครั้งนี้ ผมจะมาแนะนำวิธีการตั้งค่าสำหรับจำกัดการเข้าถึง SSH ใน Elastic Beanstalk เพื่อให้การใช้งานของเรามีความปลอดภัยมายิ่งขึ้นครับ
สิ่งที่ต้องมี
- มี Application และ Environment ใน Elastic Beanstalk แล้ว
ในบทความนี้ผมจะละเว้นการอธิบายในส่วนของการสร้าง Application และ Environment ใน Elastic Beanstalk
หากผู้อ่านต้องการเรียนรู้วิธีการเริ่มต้นใช้งาน Elastic Beanstalk ผมขอแนะนำให้อ่านบทความด้านล่างนี้ครับ
ขั้นตอน
เมื่อเริ่มต้นระบบ Elastic Beanstalk ไปแล้ว EC2 Instance จะถูกกำหนดค่า Security Group (awseb-e-xxxxxxxxxx-stack-AWSEBSecurityGroup-XXXXXXXXXXXXX) โดยอัตโนมัติ
Security Group นี้จะเปลี่ยนไปตามการตั้งค่า แต่โดยส่วนใหญ่การตั้งค่าจะเป็นดังนี้
Type | Protocol | Port | Source |
---|---|---|---|
SSH | TCP | 22 | 0.0.0.0/0 |
HTTP | TCP | 80 | 0.0.0.0/0 |
เมื่อ SSH นี้ยอมรับการเชื่อมต่อจาก IP ทั้งหมด จะทำให้การเชื่อมต่อ Type:SSH
มีความเสี่ยงที่จะถูกโจมตีด้วย BRUTE FORCE ได้ครับ ดูรายละเอียดเพิ่มเติมได้ที่ลิงก์ด้านล่างนี้
ผมจะมาอธิบายวิธีตั้งค่าเพื่อหลีกเลี่ยงในสถานการณ์ที่กล่าวมานี้
เราสามารถจำกัดการตั้งค่า IP ของการเชื่อมต่อผ่าน SSH ได้โดยตั้งค่า .ebextensions ใน Project ที่จะ Deploy ใน Elastic Beanstalk
ครั้งนี้เราจะมาทำการตั้งค่าเพื่อให้สามารถเชื่อมต่อ SSH ได้จากภายใน VPC เท่านั้นครับ
เตรียมไฟล์สำหรับ Deploy เพื่อใช้ตั้งค่าใน Elastic Beanstalk
เราจะมาสร้างไฟล์ 00_option_settings.config ในโฟลเดอร์ .ebextensions กันครับ
ก่อนอื่นให้เข้ามาที่ Service VPC และเลือกYour VPCs
จากเมนูด้านซ้าย
จากนั้นตรวจสอบ CIDR ของ VPC เช่น172.31.0.0/16
แล้ว Copy เตรียมไว้
ต่อไปให้สร้าง [โฟลเดอร์:.ebextensions
] และ [ไฟล์:00_option_settings.config
] ในโปรเจกต์ของเราเตรียมไว้ใช้อัปโหลดใน Elastic Beanstalk
Path: .ebextensions/00_option_settings.config
แล้ว Copy Code ด้านล่างนี้วางในไฟล์00_option_settings.config
จากนั้นเปลี่ยนข้อมูลใน value ที่[your-cidr-vpc]
ที่คุณกำลังใช้งานอยู่
option_settings:
- namespace: aws:autoscaling:launchconfiguration
option_name: SSHSourceRestriction
value: tcp, 22, 22, [your-cidr-vpc]
Deploy Project
เมื่อเตรียมไฟล์เสร็จแล้ว ให้ทำการ Deploy โปรเจกต์ของเราไปยัง Elastic Beanstalk ได้เลยครับ
สำหรับการ Deploy โปรเจกต์ Laravel สามารถดูตัวอย่างได้ที่บทความด้านล่างนี้ครับ
ตรวจสอบการตั้งค่า Config ใน EC2 Instance
เข้ามาที่ Service EC2 แล้วเลือกเมนูInstances
จากด้านซ้าย แล้วคลิกเข้าไปที่ Instance ของเรา
จากนั้นเลื่อนลงมาประมาณตรงกลางแล้วเลือกหัวข้อSecurity
และดูที่Inbound rules
จะเห็นว่ามีสถานะเป็นไปตามที่ผมได้ตั้งค่าไว้ในไฟล์ 00_option_settings.config ดังนี้
Type | Protocol | Port | Source |
---|---|---|---|
SSH | TCP | 22 | 172.31.0.0/16 |
เพียงเท่านี้ก็จะทำให้สามารถยอมรับการเข้าถึง SSH จากภายใน VPC เท่านั้นได้ด้วยการตั้งค่าเหล่านี้ครับ
สรุป
การตั้งค่าสำหรับจำกัดการเข้าถึง SSH ใน Elastic Beanstalk นี้จะช่วยหลีกเลี่ยงการถูกโจมตีด้วย BRUTE FORCE ได้ นอกจากนี้ยังทำให้การเชื่อมต่อ SSH ของเรามีความปลอดภัยมากยิ่งขึ้นครับ
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP จากบริษัท Classmethod (Thailand) ครับ !